/**
 * token验证相关
 */

const TokenKey = 'x-access-token'
const UserInfoKey = 'user-info'

/**
 * 记录存储（同步）
 * @param {string} key 存储键
 * @param {any} val 存储值
 */
export const setStore = (key, val) => uni.setStorageSync(key, val)

/**
 * 获取存储（同步）
 * @param {string} key 存储键
 * @returns {any} 存储值
 */
export const getStore = (key) => uni.getStorageSync(key)

/**
 * 删除存储（同步）
 * @param {string} key 存储键
 */
export const removeStore = (key) => uni.removeStorageSync(key)

/**
 * 清空所有存储（同步）
 */
export const removeAll = () => uni.clearStorageSync()

/**
 * 获取token
 * @returns {string|undefined} token值
 */
export const getToken = () => getStore(TokenKey)

/**
 * 记录token
 * @param {string} token token值
 */
export const setToken = (token) => setStore(TokenKey, token)

/**
 * 删除token
 */
export const removeToken = () => removeStore(TokenKey)

/**
 * 获取用户信息（自动反序列化）
 * @returns {object|undefined} 用户信息对象
 */
export const getUserInfo = () => {
  const raw = getStore(UserInfoKey) || ''
  return raw ? JSON.parse(raw) : undefined
}

/**
 * 设置用户信息（自动序列化）
 * @param {object} userInfo 用户信息对象
 */
export const setUserInfo = (userInfo) => {
  if (userInfo) setStore(UserInfoKey, JSON.stringify(userInfo))
}

/**
 * 删除用户信息
 */
export const removeUserInfo = () => removeStore(UserInfoKey)

/**
 * 设置权限信息（自动序列化）
 * @param {object} permission 权限信息对象
 */
export const setPermission = (permission) => {
  if (permission) setStore('permission', JSON.stringify(permission))
}

/**
 * 获取权限信息（自动反序列化）
 * @returns {object|undefined} 权限信息对象
 */
export const getPermission = () => {
  const raw = getStore('permission') || ''
  return raw ? JSON.parse(raw) : undefined
}